package com.liuhouse.controller;

import com.liuhouse.dto.AddTagDto;
import com.liuhouse.dto.EditTagDto;
import com.liuhouse.dto.TagListDto;
import com.liuhouse.pojo.Tag;
import com.liuhouse.service.ITagService;
import com.liuhouse.utils.BeanCopyUtils;
import com.liuhouse.utils.ResponseResult;
import com.liuhouse.vo.PageVo;
import com.liuhouse.vo.TagVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.xml.ws.Response;
import java.util.List;

@RestController
@RequestMapping("/content/tag")
public class TagController {
    @Autowired
    private ITagService tagService;

    //查询标签列表
    @GetMapping("/list")
    public ResponseResult<PageVo> list(Integer pageNum , Integer pageSize , TagListDto tagListDto){
        return tagService.pageTagList(pageNum , pageSize , tagListDto);
    }

    @PostMapping
    public ResponseResult add(@RequestBody AddTagDto addTagDto){
        Tag tag = BeanCopyUtils.copyBean(addTagDto, Tag.class);
        //将传递过来的数据进行转换,因为添加数据还有几个需要填充的字段
        tagService.save(tag);
        return ResponseResult.okResult();
    }


    //删除标签
    @DeleteMapping("/{id}")
    public ResponseResult delete(@PathVariable Long id){
        tagService.removeById(id);
        return ResponseResult.okResult();
    }


    //修改标签，修改标签的回显
    @GetMapping("/{id}")
    public ResponseResult getInfo(@PathVariable(value = "id") Long id){
        //获取标签的信息，可以全部返回，以便后面的扩展
        Tag tag = tagService.getById(id);
        return ResponseResult.okResult(tag);
    }


    //进行标签的修改操作
    @PutMapping
    public ResponseResult edit(@RequestBody EditTagDto tagDto){
        //将传递过来的参数封装后进行转换  原因是真正添加标签数据的时候要使用  Tag对象  因为里面还有其他需要自动填充的字段
        Tag tag = BeanCopyUtils.copyBean(tagDto, Tag.class);
        tagService.updateById(tag);
        return ResponseResult.okResult();
    }

    //查询所有的标签
    @GetMapping("/listAllTag")
    public ResponseResult listAllTag(){
        List<TagVo> tagVos = tagService.listAllTag();
        return ResponseResult.okResult(tagVos);
    }













}
